iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
AI Engineering

從對話到照護:30 天打造高齡智慧健康 AI Companion系列 第 3

Day 03|讓 AI 開口說話:從 Text-to-Speech 開始

  • 分享至 

  • xImage
  •  

前一天先完成了 Speech-to-Text,讓 AI 可以把使用者說的話轉成文字。

今天要做的事情剛好相反:

Text
↓
TTS
↓
Audio
↓
Playback

讓 AI 不只能「聽懂」,也能真正開口說話。

為什麼 AI Companion 需要 TTS?

如果要做一個高齡智慧健康 AI Companion,只透過文字回覆其實不太夠。

對部分高齡使用者來說,比起一直閱讀螢幕上的文字,直接用語音互動會更直覺。

未來不論是日常陪伴、提醒或衛教內容,都需要透過聲音自然傳達。

完整流程會逐漸變成:

使用者說話
↓
STT
↓
LLM
↓
TTS
↓
AI 說話

今天還沒有接上 LLM,所以先從 Terminal 手動輸入文字開始。

為什麼選 Kokoro 82M?

一開始我也測試過較大的 TTS 模型,但如果希望之後做即時語音互動,生成速度就會變得很重要。

因此這次選擇:

mlx-community/Kokoro-82M-bf16

Kokoro 模型相對小,可以透過 MLX 在 Apple Silicon 上本機執行,也不需要額外提供參考音訊。

目前使用:

zf_xiaoxiao

作為預設中文聲線。

第一版 TTS Demo

執行:

.venv-kokoro/bin/python -m app.tts.kokoro_cli \
  --text "你好,今天過得怎麼樣?"

流程:

輸入文字
↓
Kokoro 82M
↓
產生 WAV
↓
自動播放

也可以調整聲線與語速:

.venv-kokoro/bin/python -m app.tts.kokoro_cli \
  --text "今天有記得吃飯嗎?" \
  --voice zf_xiaoxiao \
  --speed 0.9

實測生成速度

這次一樣使用 RTF(Real-Time Factor)觀察 TTS 速度:

RTF = Inference Time / Audio Duration

當:

RTF < 1

代表生成速度比實際播放速度快。

這次測試幾種不同長度的中文句子,觀察:

  • 推論時間
  • 音訊長度
  • RTF
  • 模型載入時間

除了看生成速度,也可以確認短句和長句之間的差異。

中文語音測試

速度之外,也需要確認生成內容是不是清楚。

因此會測試:

  • 一般中文
  • 長句
  • 數字
  • 標點
  • 不同語速
  • 中英文混合

目前中文句子的表現相對穩定,但中英文混合時,部分英文詞的發音可能比較不自然。

之後可以考慮在送進 TTS 前,先加入文字正規化。

語速也會影響使用體驗

這次也會測試不同語速,例如:

speed = 0.9
speed = 1.0
speed = 1.1

如果未來主要應用在高齡使用者,我目前會比較傾向稍微降低語速,讓語音更容易聽清楚。

不過這部分還是需要後續實際測試,不能只靠單一設定決定。

今天完成了什麼?

Day 03 完成:

Text
↓
Kokoro 82M
↓
Audio
↓
Playback

到這裡,AI Companion 已經有兩個最基本的語音能力:

Day 02
語音 → 文字

Day 03
文字 → 語音

下一步想再往前一步:

如果提供一小段真人錄音,AI 能不能用相似的聲線說出新的內容?

Day 04 準備進入 Voice Cloning


上一篇
Day 02|先讓 AI 聽懂你:從 Speech-to-Text 開始
下一篇
Day 04|讓 AI 用熟悉的聲音說話:Voice Cloning
系列文
從對話到照護:30 天打造高齡智慧健康 AI Companion6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言